home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / programm / GNU_C++ / LIB / MTLB49CF.LZH / include / st-out.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-06-05  |  2.7 KB  |  89 lines

  1. /*    atst.out.h    .1    24Dec85    */
  2. /*
  3.  * Header prepended to each Atari ST .prg file
  4.  */
  5. #ifndef _STAOUT_H
  6. #define _STAOUT_H
  7.  
  8. #ifdef __cplusplus
  9. extern "C" {
  10. #endif
  11.  
  12. struct aexec {
  13.      short    a_magic;    /* magic number */
  14. unsigned long    a_text;        /* size of text segment */
  15. unsigned long    a_data;        /* size of initialized data */
  16. unsigned long    a_bss;        /* size of uninitialized data */
  17. unsigned long    a_syms;        /* size of symbol table */
  18. unsigned long    a_AZero1;    /* always zero */
  19. unsigned long    a_ldflgs;    /* program load flags */
  20. #define a_AZero2 a_ldflgs    /* compatibility */
  21. unsigned short    a_isreloc;    /* is reloc info present */
  22. };
  23.  
  24. /*
  25.  * ldflgs - stolen from MiNT mem.h
  26.  */
  27.  
  28. #define F_FASTLOAD    0x01    /* don't clear heap */
  29. #define F_ALTLOAD    0x02    /* OK to load in alternate RAM */
  30. #define F_ALTALLOC    0x04    /* OK to malloc from alt. RAM */
  31. /* #define F_RESERVED    0x08    * reserved for future use */
  32. #define F_SMALLTPA    0x08    /* Used in Magic; TPA can be allocated
  33.                    as specified in the program header
  34.                    rather than the biggest free memory
  35.                    block*/
  36. #define F_MEMFLAGS    0xf0    /* reserved for future use */
  37. #define F_SHTEXT    0x800    /* program's text may be shared */
  38.  
  39. #define BASE_OFFSET    (-32768)
  40.  
  41. #define    CMAGIC    0x601A        /* contiguous text */
  42. #define    ISRELOCINFO    0    /* relocation information is present */
  43.                 /*  any other value - no reloc info  */
  44. /*
  45.  * Macros which take exec structures as arguments and tell whether
  46.  * the file has a reasonable magic number or offsets to text|symbols|strings.
  47.  */
  48. #define    A_BADMAG(x)     (((x).a_magic)!=CMAGIC)
  49. /* this is busted...
  50. #define    A_TXTOFF(x)    ((x).a_magic==ZMAGIC ? 1024 : sizeof (struct exec))
  51. */
  52. #define    A_TXTOFF(x)    (sizeof (struct aexec))
  53. #define A_DATOFF(x)    (A_TXTOFF(x) + (x).a_text)
  54. #define A_SYMOFF(x)    (A_TXTOFF(x) + (x).a_text+(x).a_data)
  55. #define    A_STROFF(x)    (A_SYMOFF(x) + (x).a_syms)
  56.  
  57. /*
  58.  * Format of a symbol table entry
  59.  */
  60. struct    asym 
  61.     {
  62.     char        a_name[8];    /* symbol name */
  63.     unsigned short    a_type;        /* type flag, i.e. N_TEXT etc; see below */
  64.     unsigned long    a_value;    /* value of this symbol (or sdb offset) */
  65.     };
  66.  
  67. /*
  68.  * Simple values for a_type.
  69.  */
  70. #define A_UNDF    0        /* ?? for gas */
  71. #define    A_BSS    0x0100        /* bss */
  72. #define    A_TEXT    0x0200        /* text */
  73. #define    A_DATA    0x0400        /* data */
  74. #define    A_EXT    0x0800        /* external */
  75. #define A_EQREG    0x1000        /* equated register */
  76. #define A_GLOBL    0x2000        /* global */
  77. #define A_EQU    0x4000        /* equated */
  78. #define A_DEF    0x8000        /* defined */
  79. #define A_LNAM  0x0048        /* gst compat long name */
  80.                                 /* file symbols ala aln */
  81. #define A_TFILE 0x0280          /* text file corresponding to object module */
  82. #define A_TFARC 0x02C0          /* text file archive */
  83.  
  84. #ifdef __cplusplus
  85. }
  86. #endif
  87.  
  88. #endif /* _STAOUT_H */
  89.